Hi大家好,
這是我參加 iT 邦幫忙鐵人賽的第 1 次挑戰,這次的主題聚焦在結合 Python 爬蟲、RAG(檢索增強生成)與 AI,打造一套 PTT 文章智慧問答系統。在過程中,我會依照每天進度上傳程式碼到 GitHub ,方便大家參考學習。也歡迎留言或來信討論,我的信箱是 gerryearth@gmail.com。
在這個資訊爆炸的時代,我們每天接觸到的文章與內容數量龐大,但要從中快速找到自己需要的資訊,卻往往不容易。能不能打造一個智慧系統,幫我們自動蒐集資料、整理內容,並且用自然語言回應問題呢?
本系列文章將帶你 從零開始實作一個「PTT 文章智慧問答系統」。過程中我們會一步步學習並整合爬蟲、資料庫、API 開發、向量檢索 (Pinecone) 與生成式 AI (Gemini),最後再透過 Docker 完成整套部署。
不需要高深的 AI 理論,只要你有 Python 的基礎,就能跟著每天的教學,從 爬文章 → 存資料 → 做檢索 → 自然語言回答,逐步打造屬於自己的智慧問答機器人。
天數 | 主題 | 簡述 |
---|---|---|
Day 01 | 一起來打造 PTT 文章智慧問答系統! | 說明專案目標、技術堆疊與開發流程 |
Day 02 | 環境建置與必要工具安裝(上) | 介紹與安裝 PyCharm、Django |
Day 03 | 環境建置與必要工具安裝(下) | 介紹與安裝 MariaDB |
Day 04 | Docker 環境建置(上) | 建立可攜式開發與執行環境 |
Day 05 | Docker 環境建置(下) | 完整部署到 Docker 的容器 |
Day 06 | 探索 PTT 結構與版面資料抓取 | 擷取文章內容、發文者與時間資訊 |
Day 07 | 建立基本爬蟲抓取文章列表與內容 | 寫出完整爬蟲程式 |
Day 08 | 設計 Django Model 並連接資料庫 | 定義資料結構與模型 |
Day 09 | 認識 Celery & Redis | 認識、安裝與設定 Celery 與 Redis |
Day 10 | 使用 Celery + Redis 建立非同步排程(上) | 實作排程與背景任務執行 |
Day 11 | 使用 Celery + Redis 建立非同步排程(下) | 實作 Celery Beat |
Day 12 | 監控與除錯 | 記錄爬蟲執行 Log 並儲存至資料庫 |
Day 13 | Django REST Framework 入門介紹 | 打造高彈性 RESTful API 的利器 |
Day 14 | 實作 Django REST Framework API(上) | 建立文章 API:列表、篩選、查詢 |
Day 15 | 實作 Django REST Framework API(下) | 建立文章 API:單篇內容與統計資料 |
Day 16 | 認識 RAG 與 向量資料庫 | 整合 RAG 與 Pinecone 的運作流程 |
Day 17 | 建立向量資料庫基礎 | Gemini Embedding 與 Pinecone 初步串接 |
Day 18 | Pinecone 整合實戰 | 從資料向量化到自動任務串接 |
Day 19 | PTT 文章智慧問答系統 | 整合 Gemini LLM 回答語意查詢問題 |
Day 20 | 封裝語意查詢流程 | 讓程式碼更乾淨且可維護 |
Day 21 | RAG 的文章切割策略(上) | 切割長度應該如何決定 |
Day 22 | RAG 的文章切割策略(下) | 決定 PTT 文章切割長度 |
... | ||
Day 29 | 系統整合與最終測試 | 回顧所有功能並測試部署成果 |
Day 30 | 回顧與未來展望 | 總結學習成果,延伸應用方向建議 |
利用 PTT 網頁文章 作為資料來源,建立一個可定時抓文、儲存、檢索並生成自然語言回答的系統,讓您從實作中了解以下技術與工具如何使用:
本專案整合下列技術模組:
模組 | 功能 |
---|---|
PTT 爬蟲 | 定時抓取特定看板最新文章 |
RAG 架構 | 結合檢索 + 生成提升問答準確率 |
Celery + Redis | 實現爬蟲排程與非同步處理 |
MariaDB | 儲存爬取文章與紀錄任務 log |
DRF | 提供 REST API 查詢與問答 |
Pinecone | 向量儲存與語意搜尋 |
Gemini API | 以上下文生成自然語言回答 |
Docker | 開發與部署一鍵完成 |
接下來我們會每天實作系統中的一個部份,從開發、測試到部署,歡迎每天跟著我一起打造屬於你自己的智慧問答機器人!
明天 【Day02】環境建置與必要工具安裝,我們將開始實作第一步!